<meta content="text/html; charset=utf-8" http-equiv="content-type">
<div style="text-align: right">
<?
$str = "Дай, Джим, на счастье лапу мне,
Такую лапу не видал я сроду.
Давай с тобой полаем при луне
На тихую, бесшумную погоду.
Дай, Джим, на счастье лапу мне.

Пожалуйста, голубчик, не лижись.
Пойми со мной хоть самое простое.
Ведь ты не знаешь, что такое жизнь,
Не знаешь ты, что жить на свете стоит.

Хозяин твой и мил и знаменит,
И у него гостей бывает в доме много,
И каждый, улыбаясь, норовит
Тебя по шерсти бархатной потрогать.

Ты по-собачьи дьявольски красив,
С такою милою доверчивой приятцей.
И, никого ни капли не спросив,
Как пьяный друг, ты лезешь целоваться.

Мой милый Джим, среди твоих гостей
Так много всяких и невсяких было.
Но та, что всех безмолвней и грустней,
Сюда случайно вдруг не заходила?

Она придет, даю тебе поруку.
И без меня, в ее уставясь взгляд,
Ты за меня лизни ей нежно руку
За все, в чем был и не был виноват.";

$str = explode("\n", $str);

foreach($str as $l => $s){
	$str[$l] = utf8_strrev($s);
}

echo join("<br/>", $str);

function utf8_strrev ($str, $reverse_numbers = false) {
	preg_match_all('/./us', $str, $ar);
	if ($reverse_numbers) return join('', array_reverse($ar[0]));
	else {
		$temp = array();
		foreach ($ar[0] as $value) {
			if (is_numeric($value) && !empty($temp[0]) && is_numeric($temp[0])) {
				foreach ($temp as $key => $value2) {
					if (is_numeric($value2)) $pos = ($key + 1);
					else break;
				}
				$temp2 = array_splice($temp, $pos);
				$temp = array_merge($temp, array($value), $temp2);
			} else array_unshift($temp, $value);
		}
		return implode('', $temp);
	}
}